功耗调整指引

1. 打开/关闭 组件

1.1. 可选的组件

在Tiramisu系列芯片上可选使能的组件有 : ETH 、USB 和 SATA

1.2. ETH

需要在U-Boot及Linux Kernel进行调整才能完全关闭该组件

1.2.1 调整U-Boot

Step1. 取消MSTAR EMAC的选项

1.2.2 调整Linux Kernel

Step1.取消EMAC的选项

Step2. 取消Networking support的选项

Step3. 取消Mstar NOTIFY driver的选项

Step4. 取消SSTAR 10/100 PHYs的选项

1.3. USB

需要在U-Boot及Linux Kernel进行调整才能完全关闭该组件

1.3.1 调整U-Boot

Step1. 取消MSTAR USB的选项

1.3.2 调整Linux Kernel

Step1. 取消USB选项

1.4. SATA

调整Kernel Config就可以关闭 SATA组件

Step1. 取消Kernel SATA Support

Step2. 取消SStar SATA Driver

2. 组件时钟频率配置

2.1. MIU clock & MIUPLL

2.1.1 DDR时钟频率配置

可以通过选用不同的IPL及IPL_CUST文件(在project/board/m6/boot/ipl目录下)来设置DDR的频率。注意,内存频率可向下兼容,反之则不行。如2133频率的DDR可以使用2133、1866、1600的IPL,而1866频率的DDR则只能使用1866、1600的IPL,不能使用2133的IPL。

2.2. CPU 时钟频率配置

2.2.1 Voltage scaling 配置

Core Power :

cat /sys/devices/system/voltage/core_power/voltage_current

Cpu Power :

cat /sys/devices/system/voltage/cpu_power/voltage_current

Dla Power :

cat /sys/devices/system/voltage/dla_power/voltage_current

注:920G已调整core_power/cpu_power/dla_power控制逻辑,应用层无需控制,只有2档可调,系统会根据VOLTAGE_DEMANDER_TEMPERATURE动态调整,

默认为1000,当IC内部温度超过一定范围会自动降到900。

2.2.2 Clock scaling 配置

  • Read current CPU frequency

    cat /sys/devices/system/cpu/cpufreq/cpufreq_testout
    
  • Update CPU frequency

    echo x > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
    
    echo x > /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq
    
    x = 800000, 1000000, 1100000, 1200000
    

    Example:

    echo 1000000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
    
    echo 1000000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq
    

    默认min cpufreq = 800MHz

    # cat /sys/devices/system/cpu/cpufreq/cpufreq_testout
    
    800016000
    

    如修改min cpufreq为1000MHz

    # cat /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
    
    1000000
    
    # cat /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq
    
    1200000
    
    # cat /sys/devices/system/cpu/cpufreq/cpufreq_testout
    
    1000032000
    

2.3. ISP 时钟频率配置

2.3.1 ISP配置示例

在isp.ko, ispmid.ko加载之后,开启视频处理任务之前,即可通过如下命令设置相关频率:

  • 读取目前的isp clock rate,可通过以下命令取得

    cat /sys/devices/virtual/mstar/isp0/isp_clk
    
  • 设置isp clock rate,可通过以下命令设置

    echo 240000000 > /sys/devices/virtual/mstar/isp0/isp_clk
    

2.3.2 ISP时钟频率档位

  • 480000000

  • 432000000

  • 384000000

  • 320000000

  • 240000000

  • 216000000

  • 172800000

  • 72000000

2.3.3 约束

以上的设置应该在模块加载完成之后操作模块功能之前设置,才能正确的生效。

2.4. 编解码时钟频率配置

2.4.1 编解码器配置示例

在mhal.ko加载之后,开启视频编解码处理任务之前,即可通过如下命令设置相关频率:

Vcodec Firmware跑在一颗独立的Cpu(Vcpu),且HW ip与ven arbiter clk分别单独控制,因此有三个Clk: Vcpu(SW), HW ip , ven arbiter(AXI), 分别透过ven_clock, ven_clock_2nd, ven_clock_axi控制

  • 读取目前的clock rate,可通过以下命令取得

    cat /sys/devices/virtual/mstar/venc/ven_clock
    
    cat /sys/devices/virtual/mstar/venc/ven_clock_2nd
    
    cat /sys/devices/virtual/mstar/venc/ven_clock_axi
    
  • 设置clock rate,可通过以下命令设置

    echo 320000000 > /sys/devices/virtual/mstar/venc/ven_clock
    
    echo 320000000 > /sys/devices/virtual/mstar/venc/ven_clock_2nd
    
    echo 320000000 > /sys/devices/virtual/mstar/venc/ven_clock_axi
    

2.4.2 编解码器时钟频率档位

  • ven_clock

    • 468000000

    • 420000000

    • 348000000

    • 300000000

    • 480000000

    • 432000000

    • 384000000

    • 320000000

    • 288000000

    • 192000000

    • 123400000

  • ven_clock_2nd

    • 468000000

    • 420000000

    • 348000000

    • 300000000

    • 216000000

    • 384000000

    • 320000000

  • ven_clock_axi

    • 468000000

    • 420000000

    • 348000000

    • 300000000

    • 384000000

    • 320000000

    • 216000000

2.4.3 约束

  1. 以上的设置应该在模块加载完成之后操作模块功能之前设置,并在执行模块时才能正确的生效。

  2. 当ven_clock, ven_clock_2nd, ven_clock_axi其中一个设定为 468000000/ 420000000/ 348000000/ 30000000时,另外两个只能选择相同的CLk或者除此之外的其它Clk,即ven_clock, ven_clock_2nd和ven_clock_axi不能同时为其中的不同值。

2.5. SCL 时钟频率配置

2.5.1 scaler时钟频率配置

在mhal.ko加载之后,开启视频处理任务之前,即可通过如下命令设置相关频率:

  • 读取目前的clock rate,可通过以下命令取得

    cat /sys/devices/virtual/mstar/mscl/clk
    
  • 设置clock rate,可通过以下命令设置

    echo 384000000 > /sys/devices/virtual/mstar/mscl/clk
    

2.5.2 scaler时钟频率档位

  • 480000000 (OD)

  • 432000000

  • 384000000

  • 320000000

  • 288000000

  • 240000000

  • 172000000

  • 123000000

2.5.3 约束

以上的设置应该在模块加载完成之后操作模块功能之前设置,并在执行模块时才能正确的生效。

2.6. LDC 时钟频率配置

2.6.1 LDC时钟频率配置

在mhal.ko加载之后,开启视频处理任务之前,即可通过如下命令设置相关频率:

  • 读取目前的clock rate,可通过以下命令取得

    cat /sys/devices/virtual/mstar/ldc/clk
    
  • 设置clock rate,可通过以下命令设置

    echo 384000000 > /sys/devices/virtual/mstar/ldc/clk
    

2.6.2 LDC时钟频率档位

  • 480000000 (OD)

  • 432000000

  • 384000000

  • 320000000

  • 288000000

  • 216000000

  • 86000000

2.7. JPEG 时钟频率配置

2.7.1 JPEG时钟频率配置

在mhal.ko加载之后,开启视频处理任务之前,即可通过如下命令设置相关频率:

  • 读取目前的clock rate,可通过以下命令取得

    cat /sys/devices/virtual/mstar/jpeg/jpe_clock
    
  • 设置clock rate,可通过以下命令设置

    echo 432000000 > /sys/devices/virtual/mstar/jpeg/jpe_clock
    

2.7.2 JPEG时钟频率档位

  • 480000000

  • 432000000

  • 384000000

  • 320000000

  • 288000000

  • 216000000

2.8. IVE 时钟频率配置

2.8.1 IVE时钟频率配置

在mhal.ko加载之后,开启视频处理任务之前,即可通过如下命令设置相关频率:

  • 读取目前的clock rate,可通过以下命令取得(Bank 1038 h6a [12:8] reg_ckg_ive)

    /customer/riu_r 1038 6a
    
  • 设置clock rate,可通过以下命令设置

    /customer/riu_w 1038 6a XXYY
    
    XX : IVE clock
    
    YY : origin value (use riu_r to check this value)
    

2.8.2 IVE时钟频率档位

  • XX=00001 : disable clock

  • XX=00000 : 216 MHz

  • XX=00100 : 172 MHz

  • XX=01000 : 123 MHz

  • XX=01100 : 86 MHz

  • XX=10000 : 288 MHz

  • XX=10100 : 320 MHz

2.9. IPU 时钟频率配置

2.9.1 IPU时钟频率配置

mi_ipu.ko加载后,可以通过写时钟频率(单位MHz)到/sys/dla/clk_rate配置IPU时钟频率

Example:

echo 900 > /sys/dla/clk_rate

2.9.2 IPU时钟频率档位

# cat /sys/dla/clk_rate

current ipu clock frequency: 900MHz

available frequency:

300MHz

400MHz

500MHz

600MHz

700MHz

800MHz

900MHz

1000MHz

2.10. 观察cpu的温度

cat /sys/devices/virtual/mstar/msys/TEMP_R

结果仅供参考,因为误差可以达到5摄氏度。

2.11. MOP/DISP 时钟频率配置

DISP / MOP 有4 CLK, mop0/mop1/disp432/disp216。其中disp432/disp216是固定檔位無法調整。

2.11.1 MOP时钟频率配置

在mhal.ko加载之后,开启视频处理任务之前,即可通过如下命令设置相关频率:

  • 读取目前的clock rate,可通过以下命令取得

    cat /sys/devices/virtual/mstar/mdispl/clk
    

  • 设置clock rate,可通过以下命令设置

    打开mop0

    echo mop0 1 384000000 > /sys/devices/virtual/mstar/mdisp/clk
    

    关闭mop0

    echo mop0 0 384000000 > /sys/devices/virtual/mstar/mdisp/clk
    

    打开mop1

    echo mop1 1 384000000 > /sys/devices/virtual/mstar/mdisp/clk
    

    关闭mop1

    echo mop1 0 384000000 > /sys/devices/virtual/mstar/mdisp/clk
    

2.11.2 MOP时钟频率档位

  • 480000000

  • 432000000

  • 384000000

  • 320000000

  • 288000000

  • 240000000

  • 216000000

  • 192000000

2.11.3 约束

以上的设置应该在模块加载完成之后操作模块功能之前设置,并在执行模块时才能正确的生效。

2.12. PNL 时钟频率配置

PNL CLK因要配合output interface的規格。無法作調整。

2.13. GE 时钟频率配置

2.13.1 GE时钟频率配置

在mhal.ko加载之后,即可通过如下命令设置相关频率:

  • 读取目前的clock rate,可通过以下命令取得

    cat /sys/devices/virtual/mstar/mge/geclk
    
    GE Now_clk equal miu clk
    
    ======================== GE Clk Msg ========================
    
    216000000
    
    172800000
    
    144000000
    
    320000000
    
    384000000
    
    432000000
    
    240000000
    
  • 设置clock rate,可通过以下命令设置

    echo 0 clk=384000000 > /sys/devices/virtual/mstar/mge/geclk
    

2.13.2 GE时钟频率档位

  • 216000000

  • 172800000

  • 144000000

  • 320000000

  • 384000000

  • 432000000

  • 240000000

GE Clock (Bank 1038 h51 [4:0])

/customer/riu_r 1038 51

2.14. JPD 时钟频率配置

2.14.1 JPD时钟频率配置

在mhal.ko加载之后,开启图片解码任务之后,即可通过如下命令设置相关频率:

  • 读取目前的clock rate,可通过以下命令取得

    cat /sys/devices/virtual/mstar/jpd/jpdclk
    
  • 设置clock rate,可通过以下命令设置

    echo 0 clk=432000000 > /sys/devices/virtual/mstar/jpd/jpdclk //0 -> dev0
    

2.14.2 JPD时钟频率档位

  • 432000000

  • 384000000

  • 320000000

  • 288000000

  • 172800000

  • 240000000

jpd Clock (Bank 1038 h4a [4:0])

2.15. HDMI 时钟频率配置

2.15.1 HDMI时钟频率配置

在mhal.ko加载之后,即可通过如下命令设置相关频率:

  • 关闭时钟:

    echo disp432 0 4320000000 > /sys/devices/virtual/mstar/mhdmitx/clk
    
  • 开启时钟:

    echo disp432 1 4320000000 > /sys/devices/virtual/mstar/mhdmitx/clk
    

2.15.2 HDMI时钟频率档位

(目前只支持432M clk)

echo disp432 1 4320000000 > /sys/devices/virtual/mstar/mhdmitx/clk

echo disp216 1 2160000000 > /sys/devices/virtual/mstar/mhdmitx/clk

disp432 Clock (Bank 1038 h48 [11:8])

3. Check list

3.1. CPU Voltage

Core Power :

cat /sys/devices/system/voltage/core_power/voltage_current

Cpu Power :

cat /sys/devices/system/voltage/cpu_power/voltage_current

Dla Power :

cat /sys/devices/system/voltage/dla_power/voltage_current

3.2. CPU Clock

cat /sys/devices/system/cpu/cpufreq/cpufreq_testout

3.3. MIU Clock & MIUPLL

3.4. ISP Clock (Bank 1038 h61 [12:8])

/customer/riu_r 1038 61

3.5. VEN Clock (Bank 1038 h68 [4:0] & h69 [3:0] & h69 [11:8])

/customer/riu_r 1038 68

/customer/riu_r 1038 69

3.6. VPE Clock (Bank 1038 h64 [4:0])

/customer/riu_r 1038 64

3.7. LDC Clock (Bank 1038 h53 [4:0])

/customer/riu_r 1038 53

3.8. DIP Clock (Bank 1038 h52 [4:0])

/customer/riu_r 1038 52

3.9. JPEG Clock (Bank 1038 h6a [4:0])

/customer/riu_r 1038 6a

3.10. IVE Clock (Bank 1038 h6a [12:8])

/customer/riu_r 1038 6a

3.11. IPU Clock (Bank 1038 h50 [4:0])

/customer/riu_r 1038 50

3.12. EMAC Clock (Bank 1038 h42 [3:0])

/customer/riu_r 1038 42

3.13. Mop0 Clock (Bank 1038 h47 [4:0])

/customer/riu_r 1038 47

3.14. Mop1 Clock (Bank 1038 h47 [12:8])

/customer/riu_r 1038 47

3.15. JPD Clock (Bank 1038 h4a [12:8])

/customer/riu_r 1038 4a

3.16. GE Clock (Bank 1038 h51 [12:8])

/customer/riu_r 1038 51

3.17. HDMI Clock (Bank 1038 h48 [11:8])

/customer/riu_r 1038 48